其他运算符
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
问号表达式
问号表达式由三部分组成,它的功能就是通过判断表达式的结果(Boolean值)来决定将哪个值赋值给左侧的变量。
variable x = (expression) ? value if true : value if false
public class Test {
public static void main(String args[]) {
int a, b;
a = 10;
b = (a == 1) ? 20 : 30;
System.out.println("Value of b is : " + b);
b = (a == 10) ? 20 : 30;
System.out.println("Value of b is : " + b);
}
}
上面的例子输出结果如下:
Value of b is : 30
Value of b is : 20
instanceof操作符
该操作符仅适用于对象引用型的变量,通过instanceof我们可以判断某个对象是否为特定的类型(类或接口),下面是instanceof操作符的语句:
( Object reference variable ) instanceof (class/interface type)
如果instanceof左侧变量所引用的对象与右侧的类或接口是IS-A的关系,那么返回结果为真。我们来看看下面的例子:
public class Test {
public static void main(String args[]) {
String name = "James";
// following will return true since name is type of String
boolean result = name instanceof String;
System.out.println(result);
}
}
运行结果为:
true
同时如果比较的对象引用与右侧类存在继承的关系,那么返回值也是true。我们再来看看下面的例子:
class Vehicle {}
public class Car extends Vehicle {
public static void main(String args[]) {
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println(result);
}
}
运行结果为:
true
Java操作符的优先级
当多个运算符出现在一个表达式中,到底先处理那个运算符呢?这就涉及到运算符的优先级别问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果不一样。
例如,(1 + 3) +(3 + 2) *
2;这个表达式如果按加号最优先计算,答案就是18,如果按照乘号最优先,答案则是14。
再如,x = 7 + 3 * 2;
这里x得到13,而不是20,因为乘法运算符比加法运算符有较高的优先级,所以先计算3 * 2得到6,然后再加7。
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。
类别 | 操作符 | 关联性 | |
---|---|---|---|
后缀 | () [] .(点操作符) | 左到右 | |
一元 | ++ -- ! ? | 从右到左 | |
乘性 | * / % | 左到右 | |
加性 | + - | 左到右 | |
移位 | >> >>> << | 左到右 | |
关系 | > >= < <= | 左到右 | |
相等 | == != | 左到右 | |
按位与 | & | 左到右 | |
按位异或 | ^ | 左到右 | |
按位或 | | | 左到右 | |
逻辑与 | && | 左到右 | |
逻辑或 | || | 左到右 | |
条件 | ? : | 从右到左 | |
赋值 | = += -= *= /= %= >>= <<= &= ^= |= | 从右到左 | |
逗号 | , | 左到右 |
在线练习
{$ activeFileHint $}